<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 常规：1.先指定回调函数，再改变状态
        // new Promise(
        //     (resolve, reject) => {
        //         setTimeout(
        //             () => {
        //                 reject(3) //后改变状态，同时指定数据，然后异步执行回调函数
        //             }, 2000
        //         )
        //     }
        // ).then( //先指定回调函数，然后保存当前指定的回调函数
        //     value => {
        //         console.log(value);
        //     },
        //     reason => {
        //         console.log(reason);
        //     }
        // );


        // 2.先改变状态，再指定回调函数
        new Promise(
            (resolve, reject) => {
                reject(2) //先改变状态和指定结果，并保存状态和结果
            }
        ).then( //后指定回调函数，并☆‘异步’执行回调函数
            value => {
                console.log(value);
            },
            reason => {
                console.log(reason);
            }
        )
        console.log('---------------'); //先输出----,再输出2

        // 同上
        // const p = new Promise(
        //     (resolve, reject) => {
        //         setTimeout(
        //             () => {
        //                 reject(222)
        //             }, 2000
        //         )
        //     }
        // )
        // setTimeout(
        //     () => {
        //         p.then(
        //             value => {
        //                 console.log(value);
        //             },
        //             reason => {
        //                 console.log(reason);
        //             }
        //         )
        //     }, 3000
        // )
    </script>
</body>

</html>